home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1997 July: Mac OS SDK / Dev.CD Jul 97 SDK1.toast / Development Kits (Disc 1) / Interfaces&Libraries / Interfaces / PInterfaces / TextEdit.p < prev    next >
Encoding:
Text File  |  1995-07-06  |  28.0 KB  |  835 lines  |  [TEXT/MPS ]

  1. {
  2.      File:        TextEdit.p
  3.  
  4.      Contains:    TextEdit Interfaces.
  5.  
  6.      Version:    Technology:    System 7.5
  7.                  Package:    Universal Interfaces 2.1 in “MPW Latest” on ETO #18
  8.  
  9.      Copyright:    © 1984-1995 by Apple Computer, Inc.
  10.                  All rights reserved.
  11.  
  12.      Bugs?:        If you find a problem with this file, use the Apple Bug Reporter
  13.                  stack.  Include the file and version information (from above)
  14.                  in the problem description and send to:
  15.                      Internet:    apple.bugs@applelink.apple.com
  16.                      AppleLink:    APPLE.BUGS
  17.  
  18. }
  19.  
  20. {$IFC UNDEFINED UsingIncludes}
  21. {$SETC UsingIncludes := 0}
  22. {$ENDC}
  23.  
  24. {$IFC NOT UsingIncludes}
  25.  UNIT TextEdit;
  26.  INTERFACE
  27. {$ENDC}
  28.  
  29. {$IFC UNDEFINED __TEXTEDIT__}
  30. {$SETC __TEXTEDIT__ := 1}
  31.  
  32. {$I+}
  33. {$SETC TextEditIncludes := UsingIncludes}
  34. {$SETC UsingIncludes := 1}
  35.  
  36.  
  37. {$IFC UNDEFINED __TYPES__}
  38. {$I Types.p}
  39. {$ENDC}
  40. {    ConditionalMacros.p                                            }
  41.  
  42. {$IFC UNDEFINED __QUICKDRAW__}
  43. {$I Quickdraw.p}
  44. {$ENDC}
  45. {    MixedMode.p                                                    }
  46. {    QuickdrawText.p                                                }
  47.  
  48. {$IFC UNDEFINED __MIXEDMODE__}
  49. {$I MixedMode.p}
  50. {$ENDC}
  51.  
  52. {$PUSH}
  53. {$ALIGN MAC68K}
  54. {$LibExport+}
  55.     
  56. TYPE
  57.     TEPtr = ^TERec;
  58.     TEHandle = ^TEPtr;
  59.  
  60.     Important note about TEClickLoopProcPtr and WordBreakProcPtr
  61.  
  62.     At one point these were defined as returning the function result in the 
  63.     condition code Z-bit.  This was correct, in that it was what the 68K
  64.     implementation of TextEdit actually tested.  But, MixedMode had a different 
  65.     idea of what returning a boolean in the Z-bit meant.  MixedMode was setting
  66.     the Z-bit the complement of what was wanted.  
  67.     
  68.     Therefore, these ProcPtrs have been changed (back) to return the result in
  69.     register D0.  It turns out that for register based routines, 
  70.     MixedMode sets the Z-bit of the 68K emulator based on the contents 
  71.     of the return result register.  Thus we can get the Z-bit set correctly.  
  72.     
  73.     But, when TextEdit is recoded in PowerPC, if it calls a 68K ClickLoop
  74.     or WordBreak routine, register D0 had better have the result (in addition
  75.     to the Z-bit). Therefore all 68K apps should make sure their ClickLoop or
  76.     WordBreak routines set register D0 at the end.
  77. }
  78. {
  79.     The following ProcPtrs cannot be written in or called from a high-level 
  80.     language without the help of mixed mode or assembly glue because they 
  81.     use the following parameter-passing conventions:
  82.  
  83.     typedef pascal void (*HighHookProcPtr)(const Rect *r, TEPtr pTE);
  84.     typedef pascal void (*CaretHookProcPtr)(const Rect *r, TEPtr pTE);
  85.  
  86.         In:
  87.             =>     r                        on stack
  88.             =>    pTE                        A3.L
  89.         Out:
  90.             none
  91.  
  92.     typedef pascal Boolean (*EOLHookProcPtr)(char theChar, TEPtr pTE, TEHandle hTE);
  93.  
  94.         In:
  95.             =>     theChar                    D0.B
  96.             =>    pTE                        A3.L
  97.             =>    hTE                        A4.L
  98.         Out:
  99.             <=    Boolean                    Z bit of the CCR
  100.  
  101.     typedef pascal unsigned short (*WidthHookProcPtr)(unsigned short textLen,
  102.      unsigned short textOffset, void *textBufferPtr, TEPtr pTE, TEHandle hTE);
  103.     typedef pascal unsigned short (*TextWidthHookProcPtr)(unsigned short textLen,
  104.      unsigned short textOffset, void *textBufferPtr, TEPtr pTE, TEHandle hTE);
  105.  
  106.         In:
  107.             =>     textLen                    D0.W
  108.             =>    textOffset                D1.W
  109.             =>    textBufferPtr            A0.L
  110.             =>    pTE                        A3.L
  111.             =>    hTE                        A4.L
  112.         Out:
  113.             <=    unsigned short            D1.W
  114.  
  115.     typedef pascal unsigned short (*NWidthHookProcPtr)(unsigned short styleRunLen,
  116.      unsigned short styleRunOffset, short slop, short direction, void *textBufferPtr, 
  117.      short *lineStart, TEPtr pTE, TEHandle hTE);
  118.  
  119.         In:
  120.             =>     styleRunLen                D0.W
  121.             =>    styleRunOffset            D1.W
  122.             =>    slop                    D2.W (low)
  123.             =>    direction                D2.W (high)
  124.             =>    textBufferPtr            A0.L
  125.             =>    lineStart                A2.L
  126.             =>    pTE                        A3.L
  127.             =>    hTE                        A4.L
  128.         Out:
  129.             <=    unsigned short            D1.W
  130.  
  131.     typedef pascal void (*DrawHookProcPtr)(unsigned short textOffset, unsigned short drawLen,
  132.      void *textBufferPtr, TEPtr pTE, TEHandle hTE);
  133.  
  134.         In:
  135.             =>     textOffset                D0.W
  136.             =>    drawLen                    D1.W
  137.             =>    textBufferPtr            A0.L
  138.             =>    pTE                        A3.L
  139.             =>    hTE                        A4.L
  140.         Out:
  141.             none
  142.  
  143.     typedef pascal Boolean (*HitTestHookProcPtr)(unsigned short styleRunLen,
  144.      unsigned short styleRunOffset, unsigned short slop, void *textBufferPtr,
  145.      TEPtr pTE, TEHandle hTE, unsigned short *pixelWidth, unsigned short *charOffset, 
  146.      Boolean *pixelInChar);
  147.  
  148.         In:
  149.             =>     styleRunLen                D0.W
  150.             =>    styleRunOffset            D1.W
  151.             =>    slop                    D2.W
  152.             =>    textBufferPtr            A0.L
  153.             =>    pTE                        A3.L
  154.             =>    hTE                        A4.L
  155.         Out:
  156.             <=    pixelWidth                D0.W (low)
  157.             <=    Boolean                    D0.W (high)
  158.             <=    charOffset                D1.W
  159.             <=    pixelInChar                D2.W
  160.  
  161.     typedef pascal void (*TEFindWordProcPtr)(unsigned short currentPos, short caller, 
  162.      TEPtr pTE, TEHandle hTE, unsigned short *wordStart, unsigned short *wordEnd);
  163.  
  164.         In:
  165.             =>     currentPos                D0.W
  166.             =>    caller                    D2.W
  167.             =>    pTE                        A3.L
  168.             =>    hTE                        A4.L
  169.         Out:
  170.             <=    wordStart                D0.W
  171.             <=    wordEnd                    D1.W
  172.  
  173.     typedef pascal void (*TERecalcProcPtr)(TEPtr pTE, unsigned short changeLength,
  174.        unsigned short *lineStart, unsigned short *firstChar, unsigned short *lastChar);
  175.  
  176.         In:
  177.             =>     pTE                        A3.L
  178.             =>    changeLength            D7.W
  179.         Out:
  180.             <=    lineStart                D2.W
  181.             <=    firstChar                D3.W
  182.             <=    lastChar                D4.W
  183.  
  184.     typedef pascal void (*TEDoTextProcPtr)(TEPtr pTE, unsigned short firstChar, unsigned short lastChar,
  185.                          short selector, GrafPtr *currentGrafPort, short *charPosition);
  186.  
  187.         In:
  188.             =>     pTE                        A3.L
  189.             =>    firstChar                D3.W
  190.             =>    lastChar                D4.W
  191.             =>    selector                D7.W
  192.         Out:
  193.             <=    currentGrafPort            A0.L
  194.             <=    charPosition            D0.W
  195.             
  196. }
  197.     HighHookProcPtr = ProcPtr;  { PROCEDURE HighHook((CONST)VAR r: Rect; pTE: TEPtr); }
  198.     EOLHookProcPtr = ProcPtr;  { FUNCTION EOLHook(theChar: ByteParameter; pTE: TEPtr; hTE: TEHandle): BOOLEAN; }
  199.     CaretHookProcPtr = ProcPtr;  { PROCEDURE CaretHook((CONST)VAR r: Rect; pTE: TEPtr); }
  200.     WidthHookProcPtr = ProcPtr;  { FUNCTION WidthHook(textLen: INTEGER; textOffset: INTEGER; textBufferPtr: UNIV Ptr; pTE: TEPtr; hTE: TEHandle): INTEGER; }
  201.     TextWidthHookProcPtr = ProcPtr;  { FUNCTION TextWidthHook(textLen: INTEGER; textOffset: INTEGER; textBufferPtr: UNIV Ptr; pTE: TEPtr; hTE: TEHandle): INTEGER; }
  202.     NWidthHookProcPtr = ProcPtr;  { FUNCTION NWidthHook(styleRunLen: INTEGER; styleRunOffset: INTEGER; slop: INTEGER; direction: INTEGER; textBufferPtr: UNIV Ptr; VAR lineStart: INTEGER; pTE: TEPtr; hTE: TEHandle): INTEGER; }
  203.     DrawHookProcPtr = ProcPtr;  { PROCEDURE DrawHook(textOffset: INTEGER; drawLen: INTEGER; textBufferPtr: UNIV Ptr; pTE: TEPtr; hTE: TEHandle); }
  204.     HitTestHookProcPtr = ProcPtr;  { FUNCTION HitTestHook(styleRunLen: INTEGER; styleRunOffset: INTEGER; slop: INTEGER; textBufferPtr: UNIV Ptr; pTE: TEPtr; hTE: TEHandle; VAR pixelWidth: INTEGER; VAR charOffset: INTEGER; VAR pixelInChar: BOOLEAN): BOOLEAN; }
  205.     TEFindWordProcPtr = ProcPtr;  { PROCEDURE TEFindWord(currentPos: INTEGER; caller: INTEGER; pTE: TEPtr; hTE: TEHandle; VAR wordStart: INTEGER; VAR wordEnd: INTEGER); }
  206.     TERecalcProcPtr = ProcPtr;  { PROCEDURE TERecalc(pTE: TEPtr; changeLength: INTEGER; VAR lineStart: INTEGER; VAR firstChar: INTEGER; VAR lastChar: INTEGER); }
  207.     TEDoTextProcPtr = ProcPtr;  { PROCEDURE TEDoText(pTE: TEPtr; firstChar: INTEGER; lastChar: INTEGER; selector: INTEGER; VAR currentGrafPort: GrafPtr; VAR charPosition: INTEGER); }
  208.     {
  209.         TEClickLoopProcPtr uses register based parameters on the 68k and cannot
  210.         be written in or called from a high-level language without the help of
  211.         mixed mode or assembly glue.
  212.  
  213.         In:
  214.          => pTE             A3.L
  215.         Out:
  216.          <= return value    D0.B
  217.     }
  218.     TEClickLoopProcPtr = Register68kProcPtr;  { register FUNCTION TEClickLoop(pTE: TEPtr): BOOLEAN; }
  219.     {
  220.         WordBreakProcPtr uses register based parameters on the 68k and cannot
  221.         be written in or called from a high-level language without the help of
  222.         mixed mode or assembly glue.
  223.  
  224.         In:
  225.          => text            A0.L
  226.          => charPos         D0.W
  227.         Out:
  228.          <= return value    D0.B
  229.     }
  230.     WordBreakProcPtr = Register68kProcPtr;  { register FUNCTION WordBreak(text: Ptr; charPos: INTEGER): BOOLEAN; }
  231.     HighHookUPP = UniversalProcPtr;
  232.     EOLHookUPP = UniversalProcPtr;
  233.     CaretHookUPP = UniversalProcPtr;
  234.     WidthHookUPP = UniversalProcPtr;
  235.     TextWidthHookUPP = UniversalProcPtr;
  236.     NWidthHookUPP = UniversalProcPtr;
  237.     DrawHookUPP = UniversalProcPtr;
  238.     HitTestHookUPP = UniversalProcPtr;
  239.     TEFindWordUPP = UniversalProcPtr;
  240.     TERecalcUPP = UniversalProcPtr;
  241.     TEDoTextUPP = UniversalProcPtr;
  242.     TEClickLoopUPP = UniversalProcPtr;
  243.     WordBreakUPP = UniversalProcPtr;
  244.  
  245.     TERec = RECORD
  246.         destRect:                Rect;
  247.         viewRect:                Rect;
  248.         selRect:                Rect;
  249.         lineHeight:                INTEGER;
  250.         fontAscent:                INTEGER;
  251.         selPoint:                Point;
  252.         selStart:                INTEGER;
  253.         selEnd:                    INTEGER;
  254.         active:                    INTEGER;
  255.         wordBreak:                WordBreakUPP;
  256.         clickLoop:                TEClickLoopUPP;
  257.         clickTime:                LONGINT;
  258.         clickLoc:                INTEGER;
  259.         caretTime:                LONGINT;
  260.         caretState:                INTEGER;
  261.         just:                    INTEGER;
  262.         teLength:                INTEGER;
  263.         hText:                    Handle;
  264.         hDispatchRec:            LONGINT;                                { added to replace recalBack & recalLines.  it's a handle anyway }
  265.         clikStuff:                INTEGER;
  266.         crOnly:                    INTEGER;
  267.         txFont:                    INTEGER;
  268.         txFace:                    Style;                                    {txFace is unpacked byte}
  269.         txMode:                    INTEGER;
  270.         txSize:                    INTEGER;
  271.         inPort:                    GrafPtr;
  272.         highHook:                HighHookUPP;
  273.         caretHook:                CaretHookUPP;
  274.         nLines:                    INTEGER;
  275.         lineStarts:                ARRAY [0..16000] OF INTEGER;
  276.     END;
  277.  
  278.  
  279. CONST
  280. { Justification (word alignment) styles }
  281.     teJustLeft                    = 0;
  282.     teJustCenter                = 1;
  283.     teJustRight                    = -1;
  284.     teForceLeft                    = -2;
  285. { new names for the Justification (word alignment) styles }
  286.     teFlushDefault                = 0;                            {flush according to the line direction }
  287.     teCenter                    = 1;                            {center justify (word alignment) }
  288.     teFlushRight                = -1;                            {flush right for all scripts }
  289.     teFlushLeft                    = -2;                            {flush left for all scripts }
  290. { Set/Replace style modes }
  291.     fontBit                        = 0;                            {set font}
  292.     faceBit                        = 1;                            {set face}
  293.     sizeBit                        = 2;                            {set size}
  294.     clrBit                        = 3;                            {set color}
  295.     addSizeBit                    = 4;                            {add size mode}
  296.     toggleBit                    = 5;                            {set faces in toggle mode}
  297.     toglBit                        = 5;                            { obsolete.  use toggleBit }
  298. { TESetStyle/TEContinuousStyle modes }
  299.     doFont                        = 1;                            { set font (family) number}
  300.     doFace                        = 2;                            {set character style}
  301.     doSize                        = 4;                            {set type size}
  302.     doColor                        = 8;                            {set color}
  303.     doAll                        = 15;                            {set all attributes}
  304.     addSize                        = 16;                            {adjust type size}
  305.  
  306.     doToggle                    = 32;                            {toggle mode for TESetStyle}
  307. { offsets into TEDispatchRec }
  308.     EOLHook                        = 0;                            {[UniversalProcPtr] TEEOLHook}
  309.     DRAWHook                    = 4;                            {[UniversalProcPtr] TEWidthHook}
  310.     WIDTHHook                    = 8;                            {[UniversalProcPtr] TEDrawHook}
  311.     HITTESTHook                    = 12;                            {[UniversalProcPtr] TEHitTestHook}
  312.     nWIDTHHook                    = 24;                            {[UniversalProcPtr] nTEWidthHook}
  313.     TextWidthHook                = 28;                            {[UniversalProcPtr] TETextWidthHook}
  314. { selectors for TECustomHook }
  315.     intEOLHook                    = 0;                            {TEIntHook value}
  316.     intDrawHook                    = 1;                            {TEIntHook value}
  317.     intWidthHook                = 2;                            {TEIntHook value}
  318.     intHitTestHook                = 3;                            {TEIntHook value}
  319.     intNWidthHook                = 6;                            {TEIntHook value for new version of WidthHook}
  320.     intTextWidthHook            = 7;                            {TEIntHook value for new TextWidthHook}
  321.     teFAutoScroll                = 0;                            {00000001b}
  322.     teFAutoScr                    = 0;                            {00000001b  obsolete. use teFAutoScroll}
  323.     teFTextBuffering            = 1;                            {00000010b}
  324.     teFOutlineHilite            = 2;                            {00000100b}
  325.     teFInlineInput                = 3;                            {00001000b }
  326.     teFUseTextServices            = 4;                            {00010000b }
  327.  
  328. { action for the new "bit (un)set" interface, TEFeatureFlag }
  329.     teBitClear                    = 0;
  330.     teBitSet                    = 1;                            {set the selector bit}
  331.     teBitTest                    = -1;                            {no change; just return the current setting}
  332. {constants for identifying the routine that called FindWord }
  333.     teWordSelect                = 4;                            {clickExpand to select word}
  334.     teWordDrag                    = 8;                            {clickExpand to drag new word}
  335.     teFromFind                    = 12;                            {FindLine called it ($0C)}
  336.     teFromRecal                    = 16;                            {RecalLines called it ($10)      obsolete }
  337. {constants for identifying TEDoText selectors }
  338.     teFind                        = 0;                            {TEDoText called for searching}
  339.     teHighlight                    = 1;                            {TEDoText called for highlighting}
  340.     teDraw                        = -1;                            {TEDoText called for drawing text}
  341.     teCaret                        = -2;                            {TEDoText called for drawing the caret}
  342.  
  343.     
  344. TYPE
  345.     Chars = PACKED ARRAY [0..32000] OF CHAR;
  346.  
  347.     CharsPtr = ^Chars;
  348.  
  349.     CharsHandle = ^CharsPtr;
  350.  
  351.     StyleRun = RECORD
  352.         startChar:                INTEGER;                                {starting character position}
  353.         styleIndex:                INTEGER;                                {index in style table}
  354.     END;
  355.  
  356.     STElement = RECORD
  357.         stCount:                INTEGER;                                {number of runs in this style}
  358.         stHeight:                INTEGER;                                {line height}
  359.         stAscent:                INTEGER;                                {font ascent}
  360.         stFont:                    INTEGER;                                {font (family) number}
  361.         stFace:                    Style;                                    {character Style}
  362.         stSize:                    INTEGER;                                {size in points}
  363.         stColor:                RGBColor;                                {absolute (RGB) color}
  364.     END;
  365.  
  366.     TEStyleTable = ARRAY [0..1776] OF STElement;
  367.  
  368.     STPtr = ^TEStyleTable;
  369.     STHandle = ^STPtr;
  370.  
  371.     LHElement = RECORD
  372.         lhHeight:                INTEGER;                                {maximum height in line}
  373.         lhAscent:                INTEGER;                                {maximum ascent in line}
  374.     END;
  375.  
  376.     LHTable = ARRAY [0..8000] OF LHElement;
  377.  
  378.     LHPtr = ^LHTable;
  379.     LHHandle = ^LHPtr;
  380.  
  381.     ScrpSTElement = RECORD
  382.         scrpStartChar:            LONGINT;                                {starting character position}
  383.         scrpHeight:                INTEGER;                                {starting character position}
  384.         scrpAscent:                INTEGER;
  385.         scrpFont:                INTEGER;
  386.         scrpFace:                Style;                                    {unpacked byte}
  387.         scrpSize:                INTEGER;
  388.         scrpColor:                RGBColor;
  389.     END;
  390.  
  391. { ARRAY [0..1600] OF ScrpSTElement }
  392.     ScrpSTTable = ARRAY [0..1600] OF ScrpSTElement;
  393.  
  394.     StScrpRec = RECORD
  395.         scrpNStyles:            INTEGER;                                {number of styles in scrap}
  396.         scrpStyleTab:            ScrpSTTable;                            {table of styles for scrap}
  397.     END;
  398.  
  399.     StScrpPtr = ^StScrpRec;
  400.     StScrpHandle = ^StScrpPtr;
  401.  
  402.     NullStRec = RECORD
  403.         teReserved:                LONGINT;                                {reserved for future expansion}
  404.         nullScrap:                StScrpHandle;                            {handle to scrap style table}
  405.     END;
  406.  
  407.     NullStPtr = ^NullStRec;
  408.     NullStHandle = ^NullStPtr;
  409.  
  410.     TEStyleRec = RECORD
  411.         nRuns:                    INTEGER;                                {number of style runs}
  412.         nStyles:                INTEGER;                                {size of style table}
  413.         styleTab:                STHandle;                                {handle to style table}
  414.         lhTab:                    LHHandle;                                {handle to line-height table}
  415.         teRefCon:                LONGINT;                                {reserved for application use}
  416.         nullStyle:                NullStHandle;                            {Handle to style set at null selection}
  417.         runs:                    ARRAY [0..8000] OF StyleRun;            {ARRAY [0..8000] OF StyleRun}
  418.     END;
  419.  
  420.     TEStylePtr = ^TEStyleRec;
  421.     TEStyleHandle = ^TEStylePtr;
  422.  
  423.     TextStyle = RECORD
  424.         tsFont:                    INTEGER;                                {font (family) number}
  425.         tsFace:                    Style;                                    {character Style}
  426.         tsSize:                    INTEGER;                                {size in point}
  427.         tsColor:                RGBColor;                                {absolute (RGB) color}
  428.     END;
  429.  
  430.     TextStylePtr = ^TextStyle;
  431.     TextStyleHandle = ^TextStylePtr;
  432.  
  433.     TEIntHook = INTEGER;
  434.  
  435.  
  436. CONST
  437.     uppHighHookProcInfo = $0000000F; { SPECIAL_CASE_PROCINFO( kSpecialCaseHighHook ) }
  438.     uppEOLHookProcInfo = $0000001F; { SPECIAL_CASE_PROCINFO( kSpecialCaseEOLHook ) }
  439.     uppCaretHookProcInfo = $0000000F; { SPECIAL_CASE_PROCINFO( kSpecialCaseCaretHook ) }
  440.     uppWidthHookProcInfo = $0000002F; { SPECIAL_CASE_PROCINFO( kSpecialCaseWidthHook ) }
  441.     uppTextWidthHookProcInfo = $0000002F; { SPECIAL_CASE_PROCINFO( kSpecialCaseTextWidthHook ) }
  442.     uppNWidthHookProcInfo = $0000003F; { SPECIAL_CASE_PROCINFO( kSpecialCaseNWidthHook ) }
  443.     uppDrawHookProcInfo = $0000004F; { SPECIAL_CASE_PROCINFO( kSpecialCaseDrawHook ) }
  444.     uppHitTestHookProcInfo = $0000005F; { SPECIAL_CASE_PROCINFO( kSpecialCaseHitTestHook ) }
  445.     uppTEFindWordProcInfo = $0000006F; { SPECIAL_CASE_PROCINFO( kSpecialCaseTEFindWord ) }
  446.     uppTERecalcProcInfo = $0000009F; { SPECIAL_CASE_PROCINFO( kSpecialCaseTERecalc ) }
  447.     uppTEDoTextProcInfo = $000000AF; { SPECIAL_CASE_PROCINFO( kSpecialCaseTEDoText ) }
  448.     uppTEClickLoopProcInfo = $0000F812; { Register FUNCTION (4 bytes in A3): 1 byte in D0; }
  449.     uppWordBreakProcInfo = $00029812; { Register FUNCTION (4 bytes in A0, 2 bytes in D0): 1 byte in D0; }
  450.  
  451. FUNCTION NewHighHookProc(userRoutine: HighHookProcPtr): HighHookUPP;
  452.     {$IFC NOT GENERATINGCFM }
  453.     INLINE $2E9F;
  454.     {$ENDC}
  455.  
  456. FUNCTION NewEOLHookProc(userRoutine: EOLHookProcPtr): EOLHookUPP;
  457.     {$IFC NOT GENERATINGCFM }
  458.     INLINE $2E9F;
  459.     {$ENDC}
  460.  
  461. FUNCTION NewCaretHookProc(userRoutine: CaretHookProcPtr): CaretHookUPP;
  462.     {$IFC NOT GENERATINGCFM }
  463.     INLINE $2E9F;
  464.     {$ENDC}
  465.  
  466. FUNCTION NewWidthHookProc(userRoutine: WidthHookProcPtr): WidthHookUPP;
  467.     {$IFC NOT GENERATINGCFM }
  468.     INLINE $2E9F;
  469.     {$ENDC}
  470.  
  471. FUNCTION NewTextWidthHookProc(userRoutine: TextWidthHookProcPtr): TextWidthHookUPP;
  472.     {$IFC NOT GENERATINGCFM }
  473.     INLINE $2E9F;
  474.     {$ENDC}
  475.  
  476. FUNCTION NewNWidthHookProc(userRoutine: NWidthHookProcPtr): NWidthHookUPP;
  477.     {$IFC NOT GENERATINGCFM }
  478.     INLINE $2E9F;
  479.     {$ENDC}
  480.  
  481. FUNCTION NewDrawHookProc(userRoutine: DrawHookProcPtr): DrawHookUPP;
  482.     {$IFC NOT GENERATINGCFM }
  483.     INLINE $2E9F;
  484.     {$ENDC}
  485.  
  486. FUNCTION NewHitTestHookProc(userRoutine: HitTestHookProcPtr): HitTestHookUPP;
  487.     {$IFC NOT GENERATINGCFM }
  488.     INLINE $2E9F;
  489.     {$ENDC}
  490.  
  491. FUNCTION NewTEFindWordProc(userRoutine: TEFindWordProcPtr): TEFindWordUPP;
  492.     {$IFC NOT GENERATINGCFM }
  493.     INLINE $2E9F;
  494.     {$ENDC}
  495.  
  496. FUNCTION NewTERecalcProc(userRoutine: TERecalcProcPtr): TERecalcUPP;
  497.     {$IFC NOT GENERATINGCFM }
  498.     INLINE $2E9F;
  499.     {$ENDC}
  500.  
  501. FUNCTION NewTEDoTextProc(userRoutine: TEDoTextProcPtr): TEDoTextUPP;
  502.     {$IFC NOT GENERATINGCFM }
  503.     INLINE $2E9F;
  504.     {$ENDC}
  505.  
  506. FUNCTION NewTEClickLoopProc(userRoutine: TEClickLoopProcPtr): TEClickLoopUPP;
  507.     {$IFC NOT GENERATINGCFM }
  508.     INLINE $2E9F;
  509.     {$ENDC}
  510.  
  511. FUNCTION NewWordBreakProc(userRoutine: WordBreakProcPtr): WordBreakUPP;
  512.     {$IFC NOT GENERATINGCFM }
  513.     INLINE $2E9F;
  514.     {$ENDC}
  515.  
  516. PROCEDURE CallHighHookProc({CONST}VAR r: Rect; pTE: TEPtr; userRoutine: HighHookUPP);
  517.     {$IFC NOT GENERATINGCFM}
  518.     {To be implemented:  Glue to move parameters according to special case conventions.}
  519.     {$ENDC}
  520.  
  521. FUNCTION CallEOLHookProc(theChar: ByteParameter; pTE: TEPtr; hTE: TEHandle; userRoutine: EOLHookUPP): BOOLEAN;
  522.     {$IFC NOT GENERATINGCFM}
  523.     {To be implemented:  Glue to move parameters according to special case conventions.}
  524.     {$ENDC}
  525.  
  526. PROCEDURE CallCaretHookProc({CONST}VAR r: Rect; pTE: TEPtr; userRoutine: CaretHookUPP);
  527.     {$IFC NOT GENERATINGCFM}
  528.     {To be implemented:  Glue to move parameters according to special case conventions.}
  529.     {$ENDC}
  530.  
  531. FUNCTION CallWidthHookProc(textLen: INTEGER; textOffset: INTEGER; textBufferPtr: UNIV Ptr; pTE: TEPtr; hTE: TEHandle; userRoutine: WidthHookUPP): INTEGER;
  532.     {$IFC NOT GENERATINGCFM}
  533.     {To be implemented:  Glue to move parameters according to special case conventions.}
  534.     {$ENDC}
  535.  
  536. FUNCTION CallTextWidthHookProc(textLen: INTEGER; textOffset: INTEGER; textBufferPtr: UNIV Ptr; pTE: TEPtr; hTE: TEHandle; userRoutine: TextWidthHookUPP): INTEGER;
  537.     {$IFC NOT GENERATINGCFM}
  538.     {To be implemented:  Glue to move parameters according to special case conventions.}
  539.     {$ENDC}
  540.  
  541. FUNCTION CallNWidthHookProc(styleRunLen: INTEGER; styleRunOffset: INTEGER; slop: INTEGER; direction: INTEGER; textBufferPtr: UNIV Ptr; VAR lineStart: INTEGER; pTE: TEPtr; hTE: TEHandle; userRoutine: NWidthHookUPP): INTEGER;
  542.     {$IFC NOT GENERATINGCFM}
  543.     {To be implemented:  Glue to move parameters according to special case conventions.}
  544.     {$ENDC}
  545.  
  546. PROCEDURE CallDrawHookProc(textOffset: INTEGER; drawLen: INTEGER; textBufferPtr: UNIV Ptr; pTE: TEPtr; hTE: TEHandle; userRoutine: DrawHookUPP);
  547.     {$IFC NOT GENERATINGCFM}
  548.     {To be implemented:  Glue to move parameters according to special case conventions.}
  549.     {$ENDC}
  550.  
  551. FUNCTION CallHitTestHookProc(styleRunLen: INTEGER; styleRunOffset: INTEGER; slop: INTEGER; textBufferPtr: UNIV Ptr; pTE: TEPtr; hTE: TEHandle; VAR pixelWidth: INTEGER; VAR charOffset: INTEGER; VAR pixelInChar: BOOLEAN; userRoutine: HitTestHookUPP): BOOLEAN;
  552.     {$IFC NOT GENERATINGCFM}
  553.     {To be implemented:  Glue to move parameters according to special case conventions.}
  554.     {$ENDC}
  555.  
  556. PROCEDURE CallTEFindWordProc(currentPos: INTEGER; caller: INTEGER; pTE: TEPtr; hTE: TEHandle; VAR wordStart: INTEGER; VAR wordEnd: INTEGER; userRoutine: TEFindWordUPP);
  557.     {$IFC NOT GENERATINGCFM}
  558.     {To be implemented:  Glue to move parameters according to special case conventions.}
  559.     {$ENDC}
  560.  
  561. PROCEDURE CallTERecalcProc(pTE: TEPtr; changeLength: INTEGER; VAR lineStart: INTEGER; VAR firstChar: INTEGER; VAR lastChar: INTEGER; userRoutine: TERecalcUPP);
  562.     {$IFC NOT GENERATINGCFM}
  563.     {To be implemented:  Glue to move parameters according to special case conventions.}
  564.     {$ENDC}
  565.  
  566. PROCEDURE CallTEDoTextProc(pTE: TEPtr; firstChar: INTEGER; lastChar: INTEGER; selector: INTEGER; VAR currentGrafPort: GrafPtr; VAR charPosition: INTEGER; userRoutine: TEDoTextUPP);
  567.     {$IFC NOT GENERATINGCFM}
  568.     {To be implemented:  Glue to move parameters according to special case conventions.}
  569.     {$ENDC}
  570.  
  571. FUNCTION CallTEClickLoopProc(pTE: TEPtr; userRoutine: TEClickLoopUPP): BOOLEAN;
  572.     {$IFC NOT GENERATINGCFM}
  573.     {To be implemented:  Glue to move parameters into registers.}
  574.     {$ENDC}
  575.  
  576. FUNCTION CallWordBreakProc(text: Ptr; charPos: INTEGER; userRoutine: WordBreakUPP): BOOLEAN;
  577.     {$IFC NOT GENERATINGCFM}
  578.     {To be implemented:  Glue to move parameters into registers.}
  579.     {$ENDC}
  580. FUNCTION TEScrapHandle : Handle;
  581.     {$IFC NOT CFMSYSTEMCALLS}
  582.     INLINE $2EB8, $0AB4;            { MOVE.l $0AB4,(SP) }
  583.     {$ENDC}
  584.  
  585. FUNCTION TEGetScrapLength: LONGINT;
  586. PROCEDURE TEInit;
  587.     {$IFC NOT GENERATINGCFM}
  588.     INLINE $A9CC;
  589.     {$ENDC}
  590. FUNCTION TENew({CONST}VAR destRect: Rect; {CONST}VAR viewRect: Rect): TEHandle;
  591.     {$IFC NOT GENERATINGCFM}
  592.     INLINE $A9D2;
  593.     {$ENDC}
  594. PROCEDURE TEDispose(hTE: TEHandle);
  595.     {$IFC NOT GENERATINGCFM}
  596.     INLINE $A9CD;
  597.     {$ENDC}
  598. PROCEDURE TESetText(text: UNIV Ptr; length: LONGINT; hTE: TEHandle);
  599.     {$IFC NOT GENERATINGCFM}
  600.     INLINE $A9CF;
  601.     {$ENDC}
  602. FUNCTION TEGetText(hTE: TEHandle): CharsHandle;
  603.     {$IFC NOT GENERATINGCFM}
  604.     INLINE $A9CB;
  605.     {$ENDC}
  606. PROCEDURE TEIdle(hTE: TEHandle);
  607.     {$IFC NOT GENERATINGCFM}
  608.     INLINE $A9DA;
  609.     {$ENDC}
  610. PROCEDURE TESetSelect(selStart: LONGINT; selEnd: LONGINT; hTE: TEHandle);
  611.     {$IFC NOT GENERATINGCFM}
  612.     INLINE $A9D1;
  613.     {$ENDC}
  614. PROCEDURE TEActivate(hTE: TEHandle);
  615.     {$IFC NOT GENERATINGCFM}
  616.     INLINE $A9D8;
  617.     {$ENDC}
  618. PROCEDURE TEDeactivate(hTE: TEHandle);
  619.     {$IFC NOT GENERATINGCFM}
  620.     INLINE $A9D9;
  621.     {$ENDC}
  622. PROCEDURE TEKey(key: CHAR; hTE: TEHandle);
  623.     {$IFC NOT GENERATINGCFM}
  624.     INLINE $A9DC;
  625.     {$ENDC}
  626. PROCEDURE TECut(hTE: TEHandle);
  627.     {$IFC NOT GENERATINGCFM}
  628.     INLINE $A9D6;
  629.     {$ENDC}
  630. PROCEDURE TECopy(hTE: TEHandle);
  631.     {$IFC NOT GENERATINGCFM}
  632.     INLINE $A9D5;
  633.     {$ENDC}
  634. PROCEDURE TEPaste(hTE: TEHandle);
  635.     {$IFC NOT GENERATINGCFM}
  636.     INLINE $A9DB;
  637.     {$ENDC}
  638. PROCEDURE TEDelete(hTE: TEHandle);
  639.     {$IFC NOT GENERATINGCFM}
  640.     INLINE $A9D7;
  641.     {$ENDC}
  642. PROCEDURE TEInsert(text: UNIV Ptr; length: LONGINT; hTE: TEHandle);
  643.     {$IFC NOT GENERATINGCFM}
  644.     INLINE $A9DE;
  645.     {$ENDC}
  646. PROCEDURE TESetAlignment(just: INTEGER; hTE: TEHandle);
  647.     {$IFC NOT GENERATINGCFM}
  648.     INLINE $A9DF;
  649.     {$ENDC}
  650. PROCEDURE TEUpdate({CONST}VAR rUpdate: Rect; hTE: TEHandle);
  651.     {$IFC NOT GENERATINGCFM}
  652.     INLINE $A9D3;
  653.     {$ENDC}
  654. PROCEDURE TETextBox(text: UNIV Ptr; length: LONGINT; {CONST}VAR box: Rect; just: INTEGER);
  655.     {$IFC NOT GENERATINGCFM}
  656.     INLINE $A9CE;
  657.     {$ENDC}
  658. PROCEDURE TEScroll(dh: INTEGER; dv: INTEGER; hTE: TEHandle);
  659.     {$IFC NOT GENERATINGCFM}
  660.     INLINE $A9DD;
  661.     {$ENDC}
  662. PROCEDURE TESelView(hTE: TEHandle);
  663.     {$IFC NOT GENERATINGCFM}
  664.     INLINE $A811;
  665.     {$ENDC}
  666. PROCEDURE TEPinScroll(dh: INTEGER; dv: INTEGER; hTE: TEHandle);
  667.     {$IFC NOT GENERATINGCFM}
  668.     INLINE $A812;
  669.     {$ENDC}
  670. PROCEDURE TEAutoView(fAuto: BOOLEAN; hTE: TEHandle);
  671.     {$IFC NOT GENERATINGCFM}
  672.     INLINE $A813;
  673.     {$ENDC}
  674. PROCEDURE TECalText(hTE: TEHandle);
  675.     {$IFC NOT GENERATINGCFM}
  676.     INLINE $A9D0;
  677.     {$ENDC}
  678. FUNCTION TEGetOffset(pt: Point; hTE: TEHandle): INTEGER;
  679.     {$IFC NOT GENERATINGCFM}
  680.     INLINE $A83C;
  681.     {$ENDC}
  682. FUNCTION TEGetPoint(offset: INTEGER; hTE: TEHandle): Point;
  683.     {$IFC NOT GENERATINGCFM}
  684.     INLINE $3F3C, $0008, $A83D;
  685.     {$ENDC}
  686. PROCEDURE TEClick(pt: Point; fExtend: BOOLEAN; h: TEHandle);
  687.     {$IFC NOT GENERATINGCFM}
  688.     INLINE $A9D4;
  689.     {$ENDC}
  690. FUNCTION TEStyleNew({CONST}VAR destRect: Rect; {CONST}VAR viewRect: Rect): TEHandle;
  691.     {$IFC NOT GENERATINGCFM}
  692.     INLINE $A83E;
  693.     {$ENDC}
  694. PROCEDURE TESetStyleHandle(theHandle: TEStyleHandle; hTE: TEHandle);
  695.     {$IFC NOT GENERATINGCFM}
  696.     INLINE $3F3C, $0005, $A83D;
  697.     {$ENDC}
  698. FUNCTION TEGetStyleHandle(hTE: TEHandle): TEStyleHandle;
  699.     {$IFC NOT GENERATINGCFM}
  700.     INLINE $3F3C, $0004, $A83D;
  701.     {$ENDC}
  702. PROCEDURE TEGetStyle(offset: INTEGER; VAR theStyle: TextStyle; VAR lineHeight: INTEGER; VAR fontAscent: INTEGER; hTE: TEHandle);
  703.     {$IFC NOT GENERATINGCFM}
  704.     INLINE $3F3C, $0003, $A83D;
  705.     {$ENDC}
  706. PROCEDURE TEStylePaste(hTE: TEHandle);
  707.     {$IFC NOT GENERATINGCFM}
  708.     INLINE $3F3C, $0000, $A83D;
  709.     {$ENDC}
  710. PROCEDURE TESetStyle(mode: INTEGER; {CONST}VAR newStyle: TextStyle; fRedraw: BOOLEAN; hTE: TEHandle);
  711.     {$IFC NOT GENERATINGCFM}
  712.     INLINE $3F3C, $0001, $A83D;
  713.     {$ENDC}
  714. PROCEDURE TEReplaceStyle(mode: INTEGER; {CONST}VAR oldStyle: TextStyle; {CONST}VAR newStyle: TextStyle; fRedraw: BOOLEAN; hTE: TEHandle);
  715.     {$IFC NOT GENERATINGCFM}
  716.     INLINE $3F3C, $0002, $A83D;
  717.     {$ENDC}
  718. FUNCTION TEGetStyleScrapHandle(hTE: TEHandle): StScrpHandle;
  719.     {$IFC NOT GENERATINGCFM}
  720.     INLINE $3F3C, $0006, $A83D;
  721.     {$ENDC}
  722. PROCEDURE TEStyleInsert(text: UNIV Ptr; length: LONGINT; hST: StScrpHandle; hTE: TEHandle);
  723.     {$IFC NOT GENERATINGCFM}
  724.     INLINE $3F3C, $0007, $A83D;
  725.     {$ENDC}
  726. FUNCTION TEGetHeight(endLine: LONGINT; startLine: LONGINT; hTE: TEHandle): LONGINT;
  727.     {$IFC NOT GENERATINGCFM}
  728.     INLINE $3F3C, $0009, $A83D;
  729.     {$ENDC}
  730. FUNCTION TEContinuousStyle(VAR mode: INTEGER; VAR aStyle: TextStyle; hTE: TEHandle): BOOLEAN;
  731.     {$IFC NOT GENERATINGCFM}
  732.     INLINE $3F3C, $000A, $A83D;
  733.     {$ENDC}
  734. PROCEDURE TEUseStyleScrap(rangeStart: LONGINT; rangeEnd: LONGINT; newStyles: StScrpHandle; fRedraw: BOOLEAN; hTE: TEHandle);
  735.     {$IFC NOT GENERATINGCFM}
  736.     INLINE $3F3C, $000B, $A83D;
  737.     {$ENDC}
  738. PROCEDURE TECustomHook(which: TEIntHook; VAR addr: UniversalProcPtr; hTE: TEHandle);
  739.     {$IFC NOT GENERATINGCFM}
  740.     INLINE $3F3C, $000C, $A83D;
  741.     {$ENDC}
  742. FUNCTION TENumStyles(rangeStart: LONGINT; rangeEnd: LONGINT; hTE: TEHandle): LONGINT;
  743.     {$IFC NOT GENERATINGCFM}
  744.     INLINE $3F3C, $000D, $A83D;
  745.     {$ENDC}
  746. FUNCTION TEFeatureFlag(feature: INTEGER; action: INTEGER; hTE: TEHandle): INTEGER;
  747.     {$IFC NOT GENERATINGCFM}
  748.     INLINE $3F3C, $000E, $A83D;
  749.     {$ENDC}
  750. FUNCTION TEGetHiliteRgn(region: RgnHandle; hTE: TEHandle): OSErr;
  751.     {$IFC NOT GENERATINGCFM}
  752.     INLINE $3F3C, $000F, $A83D;
  753.     {$ENDC}
  754. PROCEDURE TESetScrapLength(length: LONGINT);
  755. FUNCTION TEFromScrap: OSErr;
  756. FUNCTION TEToScrap: OSErr;
  757. PROCEDURE TESetClickLoop(clikProc: TEClickLoopUPP; hTE: TEHandle);
  758. PROCEDURE TESetWordBreak(wBrkProc: WordBreakUPP; hTE: TEHandle);
  759.     There is no function to get/set the low-mem for FindWordHook at 0x07F8.
  760.     This is because it is not a low-mem ProcPtr. That address is the entry
  761.     in the OS TrapTable for trap 0xA0FE.  You can use Get/SetTrapAddress to 
  762.     acccess it.    
  763. }
  764. {$IFC OLDROUTINENAMES }
  765. PROCEDURE TESetJust(just: INTEGER; hTE: TEHandle);
  766.     {$IFC NOT GENERATINGCFM}
  767.     INLINE $A9DF;
  768.     {$ENDC}
  769. PROCEDURE TextBox(text: UNIV Ptr; length: LONGINT; {CONST}VAR box: Rect; just: INTEGER);
  770.     {$IFC NOT GENERATINGCFM}
  771.     INLINE $A9CE;
  772.     {$ENDC}
  773. FUNCTION TEStylNew({CONST}VAR destRect: Rect; {CONST}VAR viewRect: Rect): TEHandle;
  774.     {$IFC NOT GENERATINGCFM}
  775.     INLINE $A83E;
  776.     {$ENDC}
  777. PROCEDURE SetStylHandle(theHandle: TEStyleHandle; hTE: TEHandle);
  778.     {$IFC NOT GENERATINGCFM}
  779.     INLINE $3F3C, $0005, $A83D;
  780.     {$ENDC}
  781. PROCEDURE SetStyleHandle(theHandle: TEStyleHandle; hTE: TEHandle);
  782.     {$IFC NOT GENERATINGCFM}
  783.     INLINE $3F3C, $0005, $A83D;
  784.     {$ENDC}
  785. FUNCTION GetStylHandle(hTE: TEHandle): TEStyleHandle;
  786.     {$IFC NOT GENERATINGCFM}
  787.     INLINE $3F3C, $0004, $A83D;
  788.     {$ENDC}
  789. FUNCTION GetStyleHandle(hTE: TEHandle): TEStyleHandle;
  790.     {$IFC NOT GENERATINGCFM}
  791.     INLINE $3F3C, $0004, $A83D;
  792.     {$ENDC}
  793. PROCEDURE TEStylPaste(hTE: TEHandle);
  794.     {$IFC NOT GENERATINGCFM}
  795.     INLINE $3F3C, $0000, $A83D;
  796.     {$ENDC}
  797. FUNCTION GetStylScrap(hTE: TEHandle): StScrpHandle;
  798.     {$IFC NOT GENERATINGCFM}
  799.     INLINE $3F3C, $0006, $A83D;
  800.     {$ENDC}
  801. FUNCTION GetStyleScrap(hTE: TEHandle): StScrpHandle;
  802.     {$IFC NOT GENERATINGCFM}
  803.     INLINE $3F3C, $0006, $A83D;
  804.     {$ENDC}
  805. PROCEDURE SetStylScrap(rangeStart: LONGINT; rangeEnd: LONGINT; newStyles: StScrpHandle; fRedraw: BOOLEAN; hTE: TEHandle);
  806.     {$IFC NOT GENERATINGCFM}
  807.     INLINE $3F3C, $000B, $A83D;
  808.     {$ENDC}
  809. PROCEDURE SetStyleScrap(rangeStart: LONGINT; rangeEnd: LONGINT; newStyles: StScrpHandle; fRedraw: BOOLEAN; hTE: TEHandle);
  810.     {$IFC NOT GENERATINGCFM}
  811.     INLINE $3F3C, $000B, $A83D;
  812.     {$ENDC}
  813. PROCEDURE TEStylInsert(text: UNIV Ptr; length: LONGINT; hST: StScrpHandle; hTE: TEHandle);
  814.     {$IFC NOT GENERATINGCFM}
  815.     INLINE $3F3C, $0007, $A83D;
  816.     {$ENDC}
  817. PROCEDURE TESetScrapLen(length: LONGINT);
  818. FUNCTION TEGetScrapLen: LONGINT;
  819. PROCEDURE SetClikLoop(clikProc: TEClickLoopUPP; hTE: TEHandle);
  820. PROCEDURE SetWordBreak(wBrkProc: WordBreakUPP; hTE: TEHandle);
  821. {$ENDC}
  822.  
  823. {$ALIGN RESET}
  824. {$POP}
  825.  
  826. {$SETC UsingIncludes := TextEditIncludes}
  827.  
  828. {$ENDC} {__TEXTEDIT__}
  829.  
  830. {$IFC NOT UsingIncludes}
  831.  END.
  832. {$ENDC}
  833.